﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Data;
using System.Windows.Forms;
using System.Drawing;
using System.Text.RegularExpressions;
using System.Data.SqlClient;

namespace FrbaCommerce.Clases
{
    public class Empresa_Dir
    {
        public int id { get; set; }
        public string Usuario { get; set; }
        public string Razon_social { get; set; }
        public string Cuit { get; set; }
        public string Mail { get; set; }
        public string Domicilio { get; set; }        
        public int Nro { get; set; }
        public int Piso { get; set; }
        public string Depto { get; set; }
        public string CP { get; set; }
        public string Localidad { get; set; }
        public string Ciudad { get; set; }        
        public string NombreContacto { get; set; }
        public DateTime FechaCreacion { get; set; }
        public bool Habilitado { get; set; }


        public List<Empresa_Dir> GetEmpresas(string razonSocial, string cuit, string mail)
        {
            List<Empresa_Dir> listaDeEmpresas = new List<Empresa_Dir>();
            ConexionSql conexionSql = new ConexionSql();
            DataSet datos = new DataSet();
            string query = " SELECT E.id, U.username, E.razon_social, E.cuit, E.mail, E.contacto, E.fecha_creacion, D.domicilio, D.nro, D.piso, D.dpto, ";
            query += "D.cp, D.localidad, D.ciudad, E.habilitado ";
            query += "FROM ASDF.Empresa E ";
            query += "JOIN ASDF.Direccion D ON D.id=E.direccion ";
            query += "JOIN ASDF.Usuario U ON U.id = E.usuario ";
            if (razonSocial.Length != 0 || cuit.Length != 0 || mail.Length != 0)
            {
                query += " WHERE ";
                if (razonSocial.Length != 0)
                {
                    query += ArmarCondicion2("E.razon_social", razonSocial);
                    if (cuit.Length != 0 || mail.Length != 0)
                    {
                        query += " AND ";
                    }
                }
                if (cuit.Length != 0)
                {
                    query += ArmarCondicion("E.cuit", cuit);
                    if (mail.Length != 0)
                    {
                        query += " AND ";
                    }                    
                }
                if (mail.Length != 0)
                {
                    query += ArmarCondicion2("E.mail", mail);
                }
            }
            datos = conexionSql.ejecutarConsulta(query);
            foreach (DataRow fila in datos.Tables[0].Rows)
            {
                listaDeEmpresas.Add(this.CargarEmpresa(fila));
            }

            return listaDeEmpresas;
        }

        private string ArmarCondicion(string nombreCampo, string contenido)
        {
            string query = " " + nombreCampo + " = '" + contenido + "' ";
            return query;
        }

        private string ArmarCondicion2(string nombreCampo, string contenido)
        {
            string query = " " + nombreCampo + " LIKE '%" + contenido + "%' ";
            return query;
        }

        private Empresa_Dir CargarEmpresa(DataRow fila)
        {
            Empresa_Dir empresa = new Empresa_Dir();
            empresa.id = Convert.ToInt16(fila.ItemArray[0].ToString());
            empresa.Usuario = fila.ItemArray[1].ToString();
            empresa.Razon_social = fila.ItemArray[2].ToString();
            empresa.Cuit = fila.ItemArray[3].ToString();
            empresa.Mail = fila.ItemArray[4].ToString();
            empresa.NombreContacto = fila.ItemArray[5].ToString();
            empresa.FechaCreacion = Convert.ToDateTime(fila.ItemArray[6]);           
            empresa.Domicilio = fila.ItemArray[7].ToString();
            empresa.Nro = Convert.ToInt16(fila.ItemArray[8].ToString());
            empresa.Piso = Convert.ToInt16(fila.ItemArray[9].ToString());
            empresa.Depto = fila.ItemArray[10].ToString();
            empresa.CP = fila.ItemArray[11].ToString();
            empresa.Localidad = fila.ItemArray[12].ToString();
            empresa.Ciudad = fila.ItemArray[13].ToString();
            empresa.Habilitado = Convert.ToBoolean(fila.ItemArray[14].ToString());
            return empresa;            
        }
    }
}
